package com.ayu.shortlink.admin.controller;

import com.ayu.shortlink.admin.common.convention.result.Result;
import com.ayu.shortlink.admin.common.convention.result.Results;
import com.ayu.shortlink.admin.dao.entity.CouponTemplateDO;
import com.ayu.shortlink.admin.dto.req.CouponTemplateAddNumReqDTO;
import com.ayu.shortlink.admin.dto.req.CouponTemplateAddReqDTO;
import com.ayu.shortlink.admin.dto.req.CouponTemplatePageQueryReqDTO;
import com.ayu.shortlink.admin.dto.resp.CouponTemplatePageQueryRespDTO;
import com.ayu.shortlink.admin.dto.resp.CouponTemplateQueryRespDTO;
import com.ayu.shortlink.admin.idempotent.NoRepeatSubmit;
import com.ayu.shortlink.admin.service.CouponTemplateService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

/**
 * 用户创建优惠券模版控制器
 */
@RestController
@RequiredArgsConstructor
public class CouponTemplateController {
    private final CouponTemplateService couponTemplateService;

    /**
     * 用户创建优惠券模版
     */
    @PostMapping("/api/short-link/admin/v1/coupon-template/create")
    @NoRepeatSubmit(Mark = "CouponTemplateController_createCouponTemplate")
    public Result<Void> createCouponTemplate(@RequestBody CouponTemplateAddReqDTO requestParam){
        couponTemplateService.createCouponTemplate(requestParam);
        return Results.success();
    }

    /**
     * 增加优惠券模板数量
     */
    @PostMapping("/api/short-link/admin/v1/coupon-template/add")
    public Result<Void> addCouponTemplateNumber(@RequestBody CouponTemplateAddNumReqDTO requestParam){
        couponTemplateService.addCouponTemplateNumber(requestParam);
        return Results.success();
    }

    /**
     * 增加优惠券模板数量(V2)
     */
    @PostMapping("/api/short-link/admin/v2/coupon-template/add")
    public Result<Void> addCouponTemplateNumber2(@RequestBody CouponTemplateAddNumReqDTO requestParam){
        couponTemplateService.addCouponTemplateNumber2(requestParam);
        return Results.success();
    }

    /**
     * 分页查询优惠券模板
     */
    @GetMapping("/api/short-link/admin/v1/coupon-template/page")
    public Result<IPage<CouponTemplatePageQueryRespDTO>> pageQueryCouponTemplate(CouponTemplatePageQueryReqDTO requestParam){
        return Results.success(couponTemplateService.pageQueryCouponTemplate(requestParam));
    }

    /**
     * 根据 ID 查询具体的优惠券模版信息
     */
    @GetMapping("/api/short-link/admin/v1/coupon-template/find")
    public Result<CouponTemplateQueryRespDTO> findCouponTemplateById(String couponTemplateId){
        return Results.success(couponTemplateService.findCouponTemplateById(couponTemplateId));
    }

    /**
     * 根据 ID 和 ShopNumber 查询具体的优惠券模版信息
     */
    @GetMapping("/api/short-link/admin/v1/coupon-template/shopNumber/find")
    public Result<CouponTemplateDO> findCouponTemplateById(String shopNumber, String couponTemplateId){
        return Results.success(couponTemplateService.findCouponTemplate(shopNumber,couponTemplateId));
    }

    /**
     * 根据 ID 取消优惠券模版信息
     */
    @DeleteMapping("/api/short-link/admin/v1/coupon-template/cancel")
    public Result<Void> cancelCouponTemplateById(String couponTemplateId){
        couponTemplateService.cancelCouponTemplateById(couponTemplateId);
        return Results.success();
    }
}
